struct _GtkCssScannerPrivate
{
+ GScanner *parent;
GFile *file;
GFile *base;
GSList *state;
ParserScope scope);
static gboolean
gtk_css_provider_load_internal (GtkCssProvider *css_provider,
+ GScanner *scanner,
GFile *file,
const char *data,
gsize length,
}
static GScanner *
-gtk_css_scanner_new (GFile *file,
+gtk_css_scanner_new (GScanner *parent,
+ GFile *file,
const gchar *data,
gsize length)
{
priv = scanner->user_data = g_slice_new0 (GtkCssScannerPrivate);
+ priv->parent = parent;
+
if (file)
{
priv->file = g_object_ref (file);
/* FIXME: Avoid recursive importing */
gtk_css_provider_load_internal (css_provider,
+ scanner,
actual,
NULL, 0,
NULL);
static gboolean
gtk_css_provider_load_internal (GtkCssProvider *css_provider,
+ GScanner *parent,
GFile *file,
const char *data,
gsize length,
}
else
{
- gtk_css_provider_take_error_full (css_provider,
- file,
- 0, 0,
- load_error);
+ if (parent)
+ {
+ gtk_css_provider_error (css_provider,
+ parent,
+ GTK_CSS_PROVIDER_ERROR,
+ GTK_CSS_PROVIDER_ERROR_IMPORT,
+ "Failed to import: %s",
+ load_error->message);
+ g_error_free (load_error);
+ }
+ else
+ {
+ gtk_css_provider_take_error_full (css_provider,
+ file,
+ 0, 0,
+ load_error);
+ }
}
}
else
if (data)
{
- scanner = gtk_css_scanner_new (file, data, length);
+ scanner = gtk_css_scanner_new (parent, file, data, length);
parse_stylesheet (css_provider, scanner);
gtk_css_provider_reset (css_provider);
- return gtk_css_provider_load_internal (css_provider, NULL, data, length, error);
+ return gtk_css_provider_load_internal (css_provider, NULL, NULL, data, length, error);
}
/**
gtk_css_provider_reset (css_provider);
- return gtk_css_provider_load_internal (css_provider, file, NULL, 0, error);
+ return gtk_css_provider_load_internal (css_provider, NULL, file, NULL, 0, error);
}
/**